using System;
using System.Collections.Generic;
using Agriculture.Domain;
using MediatR;

namespace Agriculture.Api.Read.Application.Command
{
    /// <summary>
    /// 问诊单查询命令
    /// </summary>
    public class ConsultationOrderQuery : IRequest<ConsultationOrderQueryResult>
    {
        /// <summary>
        /// 患者姓名或手机号（用于模糊查询）
        /// </summary>
        public string? PatientSearch { get; set; }

        /// <summary>
        /// 问诊状态（0：全部，1：审核通过，2：未通过）
        /// </summary>
        public int? ConsultationStatus { get; set; }

        /// <summary>
        /// 问诊方式（0：全部，1：图文问诊，2：视频问诊，3：电话问诊）
        /// </summary>
        public int? ConsultationType { get; set; }

        /// <summary>
        /// 问诊来源（0：全部，1：视频问诊，2：图文问诊，3：电话问诊，4：极速图文，5：极速电话，6：复诊开药）
        /// </summary>
        public int? ConsultationSource { get; set; }

        /// <summary>
        /// 开始时间
        /// </summary>
        public DateTime? StartTime { get; set; }

        /// <summary>
        /// 结束时间
        /// </summary>
        public DateTime? EndTime { get; set; }

        /// <summary>
        /// 订单状态（0：全部，1：待支付，2：进行中，3：已完成，4：已取消，5：已退诊）
        /// </summary>
        public int? OrderStatus { get; set; }

        /// <summary>
        /// 当前页码
        /// </summary>
        public int PageIndex { get; set; } = 1;

        /// <summary>
        /// 每页大小
        /// </summary>
        public int PageSize { get; set; } = 10;
    }

    /// <summary>
    /// 问诊单查询结果
    /// </summary>
    public class ConsultationOrderQueryResult
    {
        /// <summary>
        /// 总记录数
        /// </summary>
        public int TotalCount { get; set; }

        /// <summary>
        /// 总页数
        /// </summary>
        public int TotalPages { get; set; }

        /// <summary>
        /// 当前页码
        /// </summary>
        public int CurrentPage { get; set; }

        /// <summary>
        /// 问诊订单列表
        /// </summary>
        public List<ConsultationOrderDto> ConsultationOrders { get; set; } = new List<ConsultationOrderDto>();
    }

    /// <summary>
    /// 问诊订单DTO
    /// </summary>
    public class ConsultationOrderDto
    {
        /// <summary>
        /// 提交问诊时间
        /// </summary>
        public DateTime SubmitTime { get; set; }

        /// <summary>
        /// 患者姓名
        /// </summary>
        public string Patient { get; set; }

        /// <summary>
        /// 科室
        /// </summary>
        public string Department { get; set; }

        /// <summary>
        /// 医生
        /// </summary>
        public string Doctor { get; set; }

        /// <summary>
        /// 问诊方式（图文问诊/视频问诊/电话问诊）
        /// </summary>
        public string ConsultationType { get; set; }

        /// <summary>
        /// 问诊来源
        /// </summary>
        public string ConsultationSource { get; set; }

        /// <summary>
        /// 问诊费用
        /// </summary>
        public decimal ConsultationFee { get; set; }

        /// <summary>
        /// 订单状态（待支付/进行中/已完成/已取消/已退诊）
        /// </summary>
        public string OrderStatus { get; set; }

        /// <summary>
        /// 订单编号
        /// </summary>
        public string OrderNo { get; set; }
    }
} 